package com.company.BinaryTree;

import java.util.Scanner;

/**
 * Created by v on 16-12-20.
 *
 * 我用的是Integer作为测试，实际上Bintree算法是可以处理任意实现了Comparable
 * 因为程序重点不在界面，我把输入输出都放在了控制台内
 * 另外我这里是直接使用二叉查找树作为数据结构，这样显得更有调理一些
 * 该树相当于不想交集合，不能含有相同的元素
 */
public class BinaryTreeUI {
    private static Bintree<Integer> tree=new Bintree<>();
    private static Scanner input;

    public static void main(String[] args) {
        input=new Scanner(System.in);

        boolean z=true;

        while (z){
            System.out.println();
            System.out.println("1------建立一棵二叉树\n" +
                    "2------前序遍历递归算法\n" +
                    "3------前序遍历非递归算法\n" +
                    "4------中序遍历递归算法\n" +
                    "5------中序遍历非递归算法\n" +
                    "6------后序遍历递归算法\n" +
                    "7------后序遍历非递归算法\n" +
                    "8------求树高\n" +
                    "9------求叶子总数\n" +
                    "10-----输出二叉树\n" +
                    "11-----退出\n");

            int in=input.nextInt();

            switch (in){
                case 1:tree.clear();
                case 10:
                    System.out.println("请输入你要输入的元素个数n:");
                    int n=input.nextInt();

                    System.out.println("请输入n个整数");

                    for(int i=0;i<n;i++){
                        tree.insert(input.nextInt());
                    }
                    break;
                case 2:tree.preorder();message();break;
                case 3:tree.myPreorder();message();break;
                case 4:tree.inorder();message();break;
                case 5:tree.myInorder();message();break;
                case 6:tree.postorder();message();break;
                case 7:tree.myPostorder();message();break;
                case 8:System.out.println("树高："+tree.height());break;
                case 9:System.out.println("树叶:"+tree.getNumberOfLeaves());break;
                case 11: z=false;
            }
        }
    }

    public static void message(){
        System.out.println();
        System.out.println("请输入任意元素继续");
        input.next();
    }
}
